package com.sxz.mall.mallsearch.thread;

import java.util.concurrent.*;

public class ThreadPoolDemo {
    public static void main(String[] args) {
        // 第一种： 静态方法创建
        ExecutorService executorService = Executors.newFixedThreadPool(10);

        // 第二种，手动创建  参数多
        // corePoolSize：核心线程数量 new Thread
        // maximumPoolSize: 最大的线程数量
        // keepAliveTime: 存活时间，当线程数大于核心线程，空闲的线程存活的时间 s
        // TimerUnit : 存活时间的单位
        // BlockingQueue<Runnable>: 阻塞队列,默认大小是Integer.MAX,太大了，需要设置
        // ThreadFactory: 创建线程的工厂对象
        // RejectedExcutionHandler: 拒绝执行的处理器， 阻塞队列满了，现成满了，执行的淘汰逻辑
        ThreadPoolExecutor poolExecutor = new ThreadPoolExecutor
                (5, 100, 10, TimeUnit.SECONDS,
                        new LinkedBlockingQueue<>(10000),
                        Executors.defaultThreadFactory(),
                        new ThreadPoolExecutor.AbortPolicy());

        poolExecutor.execute(() -> {
            System.out.println("----->>" + Thread.currentThread().getName());
        });
    }
}
